package com.uzai.console.service.takebal;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.uzai.console.dto.takebal.redpacket.RedPacketIdDto;
import com.uzai.console.dto.takebal.redpacket.RedPacketQuery;
import com.uzai.console.dto.takebal.redpacket.RedPacketSendMsgDto;
import com.uzai.console.vo.takebal.redpacket.RedPacketCopyVo;
import com.uzai.console.vo.takebal.redpacket.RedPacketInfoVo;
import com.uzai.console.vo.takebal.redpacket.RedPacketTotalVo;
import org.apache.ibatis.annotations.Param;

/***
 * @author liuqi
 * @date 2021年09月01日 19:26
 */
public interface RedPacketService {
    /**
     * 分页查询定向红包
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param query
     * @return null
     */
    Page<RedPacketInfoVo> findRedPacketList(RedPacketQuery query);

    /**
     * 查询定向规则详情
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param redPacketIdDto
     * @return null
     */
    RedPacketInfoVo findRedPacketInfo(RedPacketIdDto redPacketIdDto);

    /**
     * 查询红包总金额
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param query
     * @return null
     */
    RedPacketTotalVo findTotalMoney(@Param("query") RedPacketQuery query);

    /**
     * 单个未领取红包发送红包卡片
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param redPacketSendMsgDto
     * @return null
     */
    void sendCardToOneRedPacketUnReceived(RedPacketSendMsgDto redPacketSendMsgDto);

    /**
     * 单个未领取红包作废
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param redPacketIdDto
     * @return null
     */
    void invalidToOneRedPacketUnReceived(RedPacketIdDto redPacketIdDto);

    /**
     * 单个未领取红包作废并偿还
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param redPacketIdDto
     * @return null
     */
    void invalidAndRebackToOneRedPacketUnReceived(RedPacketIdDto redPacketIdDto);

    /**
     * 复制红包地址
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param redPacketIdDto
     * @return null
     */
    RedPacketCopyVo copyRedPacketUrl(RedPacketIdDto redPacketIdDto);

    /**
     * 发送消息
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param redPacketSendMsgDto
     * @return null
     */
    void sendMessage(RedPacketSendMsgDto redPacketSendMsgDto);

    /**
     * 查询领取结果
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param redPacketIdDto
     * @return null
     */
    void queryResult(RedPacketIdDto redPacketIdDto);

}
